# ScadaLink Test Infrastructure Local Docker-based test services for ScadaLink development. ## Quick Start ```bash docker compose up -d ``` This starts three services: | Service | Port | Purpose | |---------|------|---------| | OPC UA (Azure IoT OPC PLC) | 50000 (OPC UA), 8080 (web) | Simulated OPC UA server with ScadaLink-style tags | | LDAP (GLAuth) | 3893 | Lightweight LDAP with test users/groups matching ScadaLink roles | | MS SQL 2022 | 1433 | Configuration and machine data databases | ## First-Time SQL Setup The MS SQL container does not auto-run init scripts. After the first `docker compose up -d`, run: ```bash docker exec -i scadalink-mssql /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'ScadaLink_Dev1!' -C \ -i /docker-entrypoint-initdb.d/setup.sql ``` This creates the `ScadaLinkConfig` and `ScadaLinkMachineData` databases and the `scadalink_app` login. ## Stopping & Teardown **Stop containers** (data persists in SQL volume): ```bash docker compose down ``` **Stop a single service** (leave the others running): ```bash docker compose stop opcua # or: ldap, mssql docker compose start opcua # bring it back without recreating ``` **Full teardown** (stop containers, delete SQL data volume, remove pulled images): ```bash ./teardown.sh ``` Or manually: ```bash docker compose down -v # stop containers + delete SQL data volume docker compose down -v --rmi all # also remove downloaded images ``` After a full teardown, the next `docker compose up -d` starts fresh — you'll need to re-run the SQL setup script. ## CLI Tools Python CLI tools for interacting with the test services are in `tools/`. **Set up a Python virtual environment** (one-time): ```bash python3 -m venv tools/.venv && source tools/.venv/bin/activate ``` **Install dependencies** (one-time, with venv active): ```bash pip install -r tools/requirements.txt ``` > The `.venv` directory is gitignored. **Quick readiness check** (all three services, with venv active): ```bash python tools/opcua_tool.py check python tools/ldap_tool.py check python tools/mssql_tool.py check ``` | Tool | Service | Key Commands | |------|---------|-------------| | `tools/opcua_tool.py` | OPC UA | `check`, `browse`, `read`, `write`, `monitor` | | `tools/ldap_tool.py` | LDAP | `check`, `bind`, `search`, `users`, `groups` | | `tools/mssql_tool.py` | MS SQL | `check`, `setup`, `query`, `tables` | Each tool supports `--help` for full usage. See the per-service docs below for detailed examples. ## Detailed Documentation See the project root for per-service setup guides: - [test_infra.md](../test_infra.md) — Master test infrastructure overview - [test_infra_opcua.md](../test_infra_opcua.md) — OPC UA server details - [test_infra_ldap.md](../test_infra_ldap.md) — LDAP server details - [test_infra_db.md](../test_infra_db.md) — MS SQL database details