Exercise worldwide grid areas in the large-topology benchmark

This commit is contained in:
n30nex
2026-09-05 21:22:58 -04:00
parent 1bfb1eb290
commit 4b03a2e148
3 changed files with 9 additions and 38 deletions
+1 -1
View File
@@ -41,4 +41,4 @@ Before an upgrade, copy the checkpoint and record the current image ID. Build th
## Upgrade to 0.2.0
Use the v0.2.0 source tag and the updated example version setting. Rebuild with your own existing BuildKit basemap secret, retain the MQTT and optional region configuration, and preserve the checkpoint and previous image before recreating the service. Both the map and /netgraph/ use the same public API v2 feed. Verify 3D enables Topo, world locations remain available, and Netgraph groups nodes by global grid squares.
Use the v0.2.0 source tag and set CARTOLITE_VERSION=0.2.0 in your existing .env. Keep your broker settings and secret files. Rebuild with your own existing BuildKit basemap secret, retain the MQTT and optional region configuration, and preserve the checkpoint and previous image before recreating the service. Both the map and /netgraph/ use the same public API v2 feed. Verify 3D enables Topo, world locations remain available, and Netgraph groups nodes by global grid squares.
+1 -1
View File
@@ -4,6 +4,6 @@ CartoLite uses native Web Audio with no samples or audio dependency. Aurora, Woo
Sound is opt-in. A browser gesture is always required to create or resume output, including after mobile sleep. The panel shows On, Off, or Tap to Resume and stores only `{enabled, volume, scene}` locally.
Each live hop follows the exact straight geographic segment used by the historical route layer. Its cue uses a sharp packet core, short glow, restrained sparks, relay handoff, destination shimmer, node wake, and bounded 45-second residue. Hiding Routes does not hide recent live traffic.
Each live hop follows its confirmed geographic segment. In 3D, trails and residue follow sampled terrain while ground rings respond to the camera; historical routes drape over the same terrain. Topo turns on with 3D, with 1.35x elevation exaggeration. Date-line strokes split at the world-map seam without creating extra hops or notes. Its cue uses a sharp packet core, short glow, restrained sparks, relay handoff, destination shimmer, node wake, and bounded 45-second residue. Hiding Routes does not hide recent live traffic.
Adaptive quality reduces secondary detail and backing resolution during bursts but does not discard visible route hops. Reduced-motion mode uses static cues. The renderer prohibits full-map flashes, additive white saturation, camera-relative route geometry, and effects that survive route expiry.
+7 -36
View File
@@ -1,39 +1,11 @@
import { expect, test } from '@playwright/test';
import type { StateV2 } from '../src/types';
const CANADIAN_TEST_AREAS = [
{ code: 'MVRD', name: 'Metro Vancouver', lat: 49.28173, lng: -123.11928 },
{ code: 'CRD', name: 'Capital', lat: 48.43719, lng: -123.361624 },
{ code: 'FVRD', name: 'Fraser Valley', lat: 49.023309, lng: -122.368297 },
{ code: 'CVRD', name: 'Cowichan Valley', lat: 48.8359655, lng: -124.1502799 },
{ code: 'CXRD', name: 'Comox Valley', lat: 49.671948, lng: -125.016697 },
{ code: 'RDN', name: 'Nanaimo', lat: 49.164167, lng: -123.936389 },
{ code: 'ACRD', name: 'Alberni-Clayoquot', lat: 49.1977734, lng: -125.4363938 },
{ code: 'SRD', name: 'Strathcona', lat: 49.99008, lng: -125.26207 },
{ code: 'RDMW', name: 'Mount Waddington', lat: 50.5901579, lng: -127.0872202 },
{ code: 'SCRD', name: 'Sunshine Coast', lat: 49.7650789, lng: -123.7644501 },
{ code: 'QRD', name: 'qathet', lat: 50.1526491, lng: -124.3939674 },
{ code: 'SLRD', name: 'Squamish-Lillooet', lat: 49.694255, lng: -123.161963 },
] as const;
const CROSS_BORDER_TEST_AREAS = [
{ lat: 46.1879, lng: -123.8313 },
{ lat: 48.7519, lng: -122.4787 },
{ lat: 42.8864, lng: -78.8784 },
{ lat: 47.4235, lng: -120.3103 },
{ lat: 44.0521, lng: -123.0868 },
{ lat: 47.6588, lng: -117.426 },
{ lat: 42.3265, lng: -122.8756 },
{ lat: 47.0379, lng: -122.9007 },
{ lat: 45.5152, lng: -122.6784 },
{ lat: 46.2396, lng: -119.1006 },
{ lat: 43.1566, lng: -77.6088 },
{ lat: 47.6062, lng: -122.3321 },
{ lat: 44.9429, lng: -123.0351 },
{ lat: 43.0481, lng: -76.1474 },
] as const;
const SCALE_AREAS = [...CANADIAN_TEST_AREAS, ...CROSS_BORDER_TEST_AREAS];
// Synthetic grid centres across the world, safely inside 24 distinct squares.
const SCALE_AREAS = Array.from({ length: 24 }, (_, index) => ({
lat: -59.5 + Math.floor(index / 8) * 55,
lng: -169 + (index % 8) * 44,
}));
function scaleState(): StateV2 {
const now = Date.now();
@@ -66,7 +38,7 @@ function scaleState(): StateV2 {
seq: 0,
serverTime: now,
status: { feed: 'connected', activity: 'quiet', dropped: 0, version: 'test', gitSha: 'test' },
map: { center: [-96, 56], zoom: 3 },
map: { center: [0, 20], zoom: 1.4 },
nodes,
routes,
};
@@ -89,8 +61,7 @@ test('Netgraph keeps all 4,000 nodes and 7,000 links responsive', async ({ page
await expect(stage).toHaveAttribute('data-connected-nodes', '4000');
await expect(stage).toHaveAttribute('data-visible-routes', '7000');
const areaCount = Number(await stage.getAttribute('data-areas'));
expect(areaCount).toBeGreaterThan(20);
expect(areaCount).toBeLessThanOrEqual(193 + CROSS_BORDER_TEST_AREAS.length);
expect(areaCount).toBe(SCALE_AREAS.length);
expect(Number(await stage.getAttribute('data-region-assignments'))).toBeGreaterThan(1_000);
expect(Number(await stage.getAttribute('data-render-apply-ms')), 'topology indexing and layout should stay bounded').toBeLessThan(250);
expect(Number(await stage.getAttribute('data-static-draw-ms')), 'drawing every link should not block interaction').toBeLessThan(100);