Skip to content

feat: add the Azure Service Bus emulator module and fix the Azurite key - #16

Merged
kieronlanning merged 3 commits into
mainfrom
feat/azure-service-bus-emulator
Oct 27, 2026
Merged

kieronlanning merged 3 commits into
mainfrom
feat/azure-service-bus-emulator

Conversation

@kieronlanning

Copy link
Copy Markdown
Contributor

Summary

  • New module: Purview.Containers.AzureServiceBusEmulator. It runs the Azure Service Bus emulator with a SQL Server 2025 sidecar on the same backend (WSLC or Docker); the emulator reaches the sidecar by its bridge IP.
    • AcceptLicense() is required and accepts both EULAs.
    • Readiness: GET /health on the management port (5300).
    • WithConfig / WithConfigFile mount the emulator's Config.json.
    • GetConnectionString() (AMQP) and GetManagementConnectionString() (for ServiceBusAdministrationClient).
    • The package README documents sharing one emulator per test session with a queue per test, and its limitations.
  • Core: IContainer.NetworkIp (populated by WSLC and Docker) and a ContainerBase.ConfigureForStart hook. ⚠️ Adding an interface member breaks third-party IContainer implementations.
  • Azurite: AzuriteAccount.Key is now the published devstoreaccount1 key, so GetConnectionString() authenticates without extra setup.
  • MsSql: the default image is now mcr.microsoft.com/mssql/server:2025-latest. SQL Server 2022 fails on WSLC: it cannot create /.system as the non-root mssql user. This changes the default for every MsSql consumer.
  • Version: 1.1.0-prerelease.1 (minor bump).
  • A separate commit refreshes two installed engineering-playbook skills and skills-lock.json.

Validation (local)

  • WSLC: the Service Bus suite passes 9/9 (send/receive; management API; a queue created at run time; four queue tests in parallel plus one topic/subscription test on one shared emulator). MsSql passes 2/2, and Azurite passes 3/3, including an authenticated blob operation.
  • Docker: Service Bus, MsSql, Azurite (authenticated) and Key Vault module tests pass.
  • Unit: all affected suites pass; just lint-check passes; just pipeline-pack-validate reports 26/26 packages valid.

Notes

  • Azure.Storage.Blobs 12.30.1 sends API version 2026-10-06, which Azurite 3.37.0 rejects. The tests pin an older service version; the module command is unchanged.
  • The emulator image tag is latest, and the emulator writes the SQL password to its log.
  • Release-Flow.md and AGENTS.md still say a push to main releases; release.yml now triggers on release/** or a manual dispatch.

Add Purview.Containers.AzureServiceBusEmulator: the emulator plus a SQL Server
sidecar on the same backend, reached by bridge IP. AcceptLicense() is required
and accepts both EULAs. Readiness is GET /health on the management port;
WithConfig/WithConfigFile mount Config.json. The README documents sharing one
emulator per test session with a queue per test, and its limitations.

Core: add IContainer.NetworkIp (WSLC and Docker) and the
ContainerBase.ConfigureForStart hook. This is a breaking change for third-party
IContainer implementations.

Azurite: AzuriteAccount.Key is now the published devstoreaccount1 key, so
GetConnectionString() authenticates as-is.

MsSql: default to mcr.microsoft.com/mssql/server:2025-latest. SQL Server 2022
cannot create /.system as the non-root mssql user on WSLC.

Bump the version to 1.1.0-prerelease.1.
Refresh purview-architecture-testing and purview-testing-conventions (with its
new acceptance-and-container-tests reference) from purview-dev/engineering-playbook,
and record their new hashes in skills-lock.json.
release.yml publishes on a push to release/** or a manual dispatch, not on a
push to main. Document how to cut a release, the TrunkReservesMinor
eligibility rules, and checking the decision locally with release-explain.
@kieronlanning
kieronlanning merged commit 187caf6 into main Oct 27, 2026
3 checks passed
@kieronlanning
kieronlanning deleted the feat/azure-service-bus-emulator branch October 27, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant