towerops/test
Graham McIntire 52cde2cbc5 fix: H21 — stagger per-integration sync jobs across maintenance queue
Sonar, Splynx, VISP, NetBox, and Gaiia sync workers all followed the same
"cron runs, then Enum.map syncs every integration in the same job" shape.
A single slow tenant — anything from an upstream rate limit to a stuck
GraphQL call — would hold the maintenance queue slot for ten minutes
while every other integration waited in line.

Each worker now uses the dispatcher/per-integration pattern that
UispSyncWorker already had:

- the cron `perform(%Oban.Job{args: %{}})` fans out one job per eligible
  integration via `PollingOffset.calculate_offset/2`, staggered across a
  5- to 10-minute window with `unique: [period: window_seconds]`
- `perform(%Oban.Job{args: %{"integration_id" => id}})` does the actual
  sync, classifying failures via `Towerops.Workers.SyncErrors.transient?/1`
  so permanent errors (auth, 4xx) don't get retried forever

Worker-specific defaults preserved:
- gaiia / netbox: 30/600s window, longer interval
- sonar / splynx / visp: 10/300s window

Tests updated to match the two-stage dispatcher pattern — `perform_job/2`
with empty args now asserts the per-integration jobs got enqueued and
the actual sync is invoked via a separate `perform_job/2` call with the
integration_id arg.
2026-05-12 12:12:11 -05:00
..
assets fix/traffic-graph-rendering-and-polarity (#130) 2026-03-23 15:24:44 -05:00
integration routeros fixes and latency rounding 2026-02-09 17:30:06 -06:00
mix/tasks test: lift coverage from 85.84% → 86.28% 2026-05-08 17:44:18 -05:00
snmpkit feat(insights): AI surfaces its own observations from full network state 2026-05-10 14:29:56 -05:00
support feat: end-to-end /coverage compute pipeline + antenna catalog + cnHeat-style form 2026-05-06 14:32:38 -05:00
towerops fix: H21 — stagger per-integration sync jobs across maintenance queue 2026-05-12 12:12:11 -05:00
towerops_web fix: 3 more high-severity bugs (H19, H20, H25) 2026-05-12 11:32:20 -05:00
test_helper.exs test: in-process Redis fake instead of skipping Redis-backed tests 2026-05-10 11:32:50 -05:00
towerops_native_test.exs fix: resolve typing violation and ETS cache race in tests 2026-02-14 12:32:43 -06:00