SIENTIAPDE-2202 Add gateway end-to-end test suite (e2e/) End-to-end suite at the repo root, following the Laborious/Orchestrator pattern: numbered scenarios per topic in e2e/scenarios.md (1:1 with test_scenario_* functions), scenario inputs as JSON, Postgres DDL mirrored from production, `integration` marker, excluded from the default pytest run. Every dependency runs for real: MongoDB, Redis, PostgreSQL, MinIO and NATS via testcontainers, OPC UA servers in process (asyncua). Pods are built from the environment like ingestor/app.py and driven one loop iteration at a time. 69 scenarios across 7 topics: slot leasing and failover, subscription reads, NATS writes and write_status (incl. the SIENTIAPDE-2202 timestamp/quality matrix, checked on the server and on the wire), gRPC ReadTag, active reads, client certificates/security, pod lifecycle. Replaces tests/functional (legacy slot v1 tests, fully commented out) and tests/functional/test_write_e2e.py (now scenarios 3.1.x). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26 lines
766 B
JSON
26 lines
766 B
JSON
{
|
|
"plant-a": {
|
|
"name": "plant-a",
|
|
"server_id": "1",
|
|
"url": "@server:plant-a",
|
|
"subscription_period_ms": 100,
|
|
"security": {"mode": "None", "policy": "None"},
|
|
"certificate": null,
|
|
"tags": {
|
|
"ns=2;s=Level": {
|
|
"frequency": 1000,
|
|
"active_read": {"enabled": true, "cycle_multiple": 1},
|
|
"names": [
|
|
{"collection": "active_tank", "tag_name": "tank_level", "model_id": "30"},
|
|
{"collection": "active_mixer", "tag_name": "mixer_inlet_level", "model_id": "40"}
|
|
]
|
|
},
|
|
"ns=2;s=Temperature": {
|
|
"frequency": 1000,
|
|
"active_read": {"enabled": false},
|
|
"names": [{"collection": "active_tank", "tag_name": "tank_temperature", "model_id": "30"}]
|
|
}
|
|
}
|
|
}
|
|
}
|