Skip to content

feat: Add Testcontainers.FlociAz module#1729

Open
thomhurst wants to merge 1 commit into
testcontainers:developfrom
thomhurst:feat/flociaz-module
Open

feat: Add Testcontainers.FlociAz module#1729
thomhurst wants to merge 1 commit into
testcontainers:developfrom
thomhurst:feat/flociaz-module

Conversation

@thomhurst

@thomhurst thomhurst commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds Testcontainers.FlociAz, a module for floci-az, the floci Azure emulator — complementing the existing Testcontainers.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 services
  • GetCosmosConnectionString()
  • 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 of GetPropertiesAsync due to upstream emulator bugs filed as floci-io/floci-az#131 and floci-io/floci-az#132.

Summary by CodeRabbit

  • New Features

    • Added FlociAz container support for Azure-compatible Blob, Queue, Table, Cosmos DB, Event Hubs, and Service Bus services.
    • Added connection strings and service endpoint helpers for local container usage.
    • Added automatic health checks and port configuration for FlociAz containers.
  • Tests

    • Added integration tests covering Blob, Queue, and Table operations.
    • Added pinned container image configuration for consistent test execution.

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.
@thomhurst
thomhurst requested a review from HofmeisterAn as a code owner July 17, 2026 15:33
@netlify

netlify Bot commented Jul 17, 2026

Copy link
Copy Markdown

Deploy Preview for testcontainers-dotnet ready!

Name Link
🔨 Latest commit 39d2989
🔍 Latest deploy log https://app.netlify.com/projects/testcontainers-dotnet/deploys/6a5a4b66f8042b0008d4fe84
😎 Deploy Preview https://deploy-preview-1729--testcontainers-dotnet.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5eaaefc0-c76f-480b-8135-fa4ddee4b9c7

📥 Commits

Reviewing files that changed from the base of the PR and between 41a3324 and 39d2989.

📒 Files selected for processing (14)
  • Testcontainers.slnx
  • src/Testcontainers.FlociAz/.editorconfig
  • src/Testcontainers.FlociAz/FlociAzBuilder.cs
  • src/Testcontainers.FlociAz/FlociAzConfiguration.cs
  • src/Testcontainers.FlociAz/FlociAzConnectionStringProvider.cs
  • src/Testcontainers.FlociAz/FlociAzContainer.cs
  • src/Testcontainers.FlociAz/Testcontainers.FlociAz.csproj
  • src/Testcontainers.FlociAz/Usings.cs
  • tests/Testcontainers.FlociAz.Tests/.editorconfig
  • tests/Testcontainers.FlociAz.Tests/.runs-on
  • tests/Testcontainers.FlociAz.Tests/Dockerfile
  • tests/Testcontainers.FlociAz.Tests/FlociAzContainerTest.cs
  • tests/Testcontainers.FlociAz.Tests/Testcontainers.FlociAz.Tests.csproj
  • tests/Testcontainers.FlociAz.Tests/Usings.cs

Walkthrough

Adds a new Testcontainers.FlociAz module with container lifecycle configuration, Azure-compatible connection helpers, solution registration, and integration tests covering blob, queue, and table operations.

Changes

FlociAz container module

Layer / File(s) Summary
FlociAz container runtime
src/Testcontainers.FlociAz/*
Adds the multi-targeted FlociAz project, configuration model, builder, health-check startup strategy, connection-string provider, and service endpoint helpers.
FlociAz integration validation
Testcontainers.slnx, tests/Testcontainers.FlociAz.Tests/*
Registers the projects, pins the FlociAz image, configures the test environment, and tests blob, queue, and table operations.

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
Loading

Possibly related PRs

Suggested labels: enhancement, module

Suggested reviewers: hofmeisteran

Poem

A rabbit hops where containers start,
With Azure-shaped services close at heart.
Blob, queue, and table all join the play,
Health checks guide them along their way.
FlociAz sprouts, tested bright—
Hippity-hop, it runs just right!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately names the new Testcontainers.FlociAz module.
Description check ✅ Passed The description covers what changed and why, and includes the required template sections, though related issues and test steps are sparse.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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