# ZB.MOM.WW.OtOpcUa.Host.IntegrationTests Two-node Akka cluster integration tests on top of `TwoNodeClusterHarness`. ## Default mode (no infra required) ```bash dotnet test tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests ``` Uses `Microsoft.EntityFrameworkCore.InMemory` for `ConfigDb` and a stub `ILdapAuthService` that accepts any username when the password is `valid-password`. Each harness instance creates a unique in-memory database scoped to its lifetime. This is the mode CI runs by default. ## Real-infra mode (SQL Server + OpenLDAP) When you need to exercise EF behaviors that diverge between providers (index uniqueness, `RowVersion` concurrency, JSON columns, migration application) or a real LDAP bind, bring up the bundled compose stack and set the env-var switches: ```bash docker compose -f tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/docker-compose.yml up -d export OTOPCUA_HARNESS_USE_SQL=1 export OTOPCUA_HARNESS_USE_LDAP=1 dotnet test tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests docker compose -f tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/docker-compose.yml down -v ``` ### SQL Server mode (`OTOPCUA_HARNESS_USE_SQL=1`) - Container: `mcr.microsoft.com/mssql/server:2022-latest` on `localhost:14331` - Each `TwoNodeClusterHarness.StartAsync()` creates a unique database `OtOpcUa_Harness_{guid}` via `Database.EnsureCreatedAsync()` and drops it on `DisposeAsync()` (best-effort). - Port `14331` chosen to avoid colliding with the `docker-dev/` fleet (which uses `14330`). ### LDAP mode (`OTOPCUA_HARNESS_USE_LDAP=1`) - Container: `bitnami/openldap:2.6` on `localhost:3894` - Users `alice` / `alice123` and `bob` / `bob123`, all under `ou=FleetAdmin`. - Port `3894` chosen to avoid colliding with the `docker-dev/` fleet (which uses `3893`). ## Local-dev caveat This dev VM (`DESKTOP-6JL3KKO`) does not run Docker locally. Real-infra mode runs on the shared Linux Docker host (`10.100.0.35`) per `docs/v2/dev-environment.md`, or in CI on Linux.