feat: Add Testcontainers.FlociAz module#1729
Conversation
Adds a module for floci-az (https://floci.io/az/), the floci Azure emulator. Complements the existing Testcontainers.Floci (AWS) module. The emulator serves all REST services on one port (4577), routed by path suffix (/{account}, /{account}-queue, /{account}-table, ...), with Event Hubs and Service Bus AMQP on 5672/5673. The container exposes an Azurite-format storage connection string, a generic GetServiceEndpoint(service) for the path-routed services, a Cosmos connection string, and the AMQP endpoints.
✅ Deploy Preview for testcontainers-dotnet ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (14)
WalkthroughAdds a new ChangesFlociAz container module
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant FlociAzBuilder
participant DockerRuntime
participant FlociAzContainer
participant AzureSdk
FlociAzBuilder->>DockerRuntime: Start configured container
DockerRuntime->>FlociAzContainer: Poll /_floci/health
FlociAzContainer-->>FlociAzBuilder: Health check succeeds
FlociAzBuilder->>AzureSdk: Provide mapped connection string
AzureSdk->>FlociAzContainer: Access blob, queue, or table endpoint
Possibly related PRs
Suggested labels: Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What does this PR do?
Adds
Testcontainers.FlociAz, a module for floci-az, the floci Azure emulator — complementing the existingTestcontainers.Floci(AWS) module.floci-az serves its 22 Azure services on a single REST port (4577), routed by URL path suffix (
/{account}for blob,/{account}-queue,/{account}-table,/{account}-cosmos, ...), plus Event Hubs (5672) and Service Bus (5673) AMQP endpoints.The container class exposes:
GetConnectionString()— Azurite-format storage connection string (Blob/Queue/Table)GetServiceEndpoint(string service = null)— generic accessor for the path-routed servicesGetCosmosConnectionString()GetEventHubsEndpoint()/GetServiceBusEndpoint()The builder binds 4577/5672/5673 and waits on
GET /_floci/health.Why is it important?
floci-az is a separate image (
floci/floci-az) with a different port, credential model (Azure account name/key), and connection semantics than the AWS emulator, so it warrants its own package per the one-module-one-image convention.Related issues
Tests cover Blob upload/download, Queue send/receive, and Table entity round-trips against
floci/floci-az:0.9.0(pinned by digest). The tests use functional operations instead ofGetPropertiesAsyncdue to upstream emulator bugs filed as floci-io/floci-az#131 and floci-io/floci-az#132.Summary by CodeRabbit
New Features
Tests