E2E test script — Galaxy (MXAccess) driver: read / write / subscribe / alarms / history #224
Closed
dohertj2
wants to merge 2 commits from
task-galaxy-e2e into v2
pull from: task-galaxy-e2e
merge into: dohertj2:v2
dohertj2:master
dohertj2:feat/deferment-remediation
dohertj2:feat/mtconnect-driver
dohertj2:fix/issues-503-501-493-499-488
dohertj2:fix/504-abbreviate-db-strings
dohertj2:fix/487-scripted-alarm-reassert
dohertj2:fix/sql-driver-followups
dohertj2:feat/modbus-rtu-driver
dohertj2:chore/auth-0.1.5
dohertj2:feat/secrets-0.2.0
dohertj2:fix/alarm-condition-source-fields
dohertj2:v3/batch4-address-space
dohertj2:v3/batch3-uns-rework
dohertj2:v3/batch2-raw-ui
dohertj2:v3/batch1-schema-identity
dohertj2:bump-historiangateway-0.3.0
dohertj2:fix/historian-gateway-integration
dohertj2:fix/fu1-alarm-source-roundtrip
dohertj2:feat/historian-gateway-backend
dohertj2:fix/focas-poll-io-serialization
dohertj2:feat/focas-pdu-v3
dohertj2:feat/adopt-zb-health
dohertj2:docs/native-alarms-verified
dohertj2:fix/adminui-probes-and-live-panels
dohertj2:v2-gap-closeout
dohertj2:v2-akka-fuse
dohertj2:refactor/galaxy-mxgateway-client-rename
dohertj2:auto/driver-gaps-stash
dohertj2:auto/driver-gaps
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
21e0fdd4cd |
Docs audit — fill gaps so the top-level docs/ reference matches shipped code
Audit of docs/ against src/ surfaced shipped features without current-reference coverage (FOCAS CLI, Core.Scripting+VirtualTags, Core.ScriptedAlarms, Core.AlarmHistorian), an out-of-date driver count + capability matrix, ADR-002's virtual-tag dispatch not reflected in data-path docs, broken cross-references, and OpcUaServerReqs declaring OPC-020..022 that were never scoped. This commit closes all of those so operators + integrators can stay inside docs/ without falling back to v2/implementation/. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|
|
5fc596a9a1 |
E2E test script — Galaxy (MXAccess) driver: read / write / subscribe / alarms / history
Seven-stage e2e script covering every Galaxy-specific capability surface:
IReadable + IWritable + ISubscribable + IAlarmSource + IHistoryProvider.
Unlike the other drivers there is no per-protocol CLI — Galaxy's proxy
lives in-process with the server + talks to OtOpcUaGalaxyHost over a
named pipe (MXAccess COM is 32-bit-only), so every stage runs through
`otopcua-cli` against the published OPC UA address space.
## Stages
1. Probe — otopcua-cli read on the source NodeId
2. Source read — capture value for downstream comparison
3. Virtual-tag bridge — Phase 7 VirtualTag (source × 2) through
CachedTagUpstreamSource
4. Subscribe-sees-change — data-change events propagate
5. Reverse bridge — opc-ua write → Galaxy; soft-passes if the
attribute's Galaxy-side ACL forbids writes
(`BadUserAccessDenied` / `BadNotWritable`)
6. Alarm fires — scripted-alarm Condition fires with Active
state when source crosses threshold
7. History read — historyread returns samples from the Aveva
Historian → IHistoryProvider path
## Two new helpers in _common.ps1
- `Test-AlarmFiresOnThreshold` — start `otopcua-cli alarms --refresh`
in the background on a Condition NodeId, drive the source change,
assert captured stdout contains `ALARM` + `Active`. Uses the same
Start-Process + temp-file pattern as `Test-SubscribeSeesChange` since
the alarms command runs until Ctrl+C (no built-in --duration).
- `Test-HistoryHasSamples` — call `otopcua-cli historyread` over a
configurable lookback window, parse `N values returned.` marker, fail
if below MinSamples. Works for driver-sourced, virtual, or scripted-
alarm historized nodes.
## Wiring
- `test-all.ps1` picks up the optional `galaxy` sidecar section and
runs the script with the configured NodeIds + wait windows.
- `e2e-config.sample.json` adds a `galaxy` section seeded with the
Phase 7 defaults (`p7-smoke-tag-source` / `-vt-derived` /
`-al-overtemp`) — matches `scripts/smoke/seed-phase-7-smoke.sql`.
- `scripts/e2e/README.md` expected-matrix gains a Galaxy row.
## Prereqs
- OtOpcUaGalaxyHost running (NSSM-wrapped) with the Galaxy + MXAccess
runtime available
- `seed-phase-7-smoke.sql` applied with a live Galaxy attribute
substituted into `dbo.Tag.TagConfig`
- OtOpcUa server running against the `p7-smoke` cluster
- Non-elevated shell (Galaxy.Host pipe ACL denies Admins)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|