Skip to content

Conversation

@cgillum
Copy link
Member

@cgillum cgillum commented Nov 7, 2025

Motivation and Context

This is a continuation of the work to port the Durable Task extensions for MAF into the MAF repo. This step specifically covers integration tests, which is the final step in the migration for the .NET code.

Description

This PR introduces two projects:

  • Microsoft.Agents.AI.DurableTask.IntegrationTests: integration tests for the core functionality
  • Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests: integration tests for the Azure Functions-specific functionality and for validating the Azure Functions samples

These integration tests rely on Azure OpenAI, the Durable Task Scheduler (emulator), the Azurite (Azure Storage emulator), and the Azure Functions Core Tools. The latter two are only for the Functions integration tests.

Importantly, the Azure Functions integration test project validates the samples that we're shipping under /dotnet/samples/AzureFunctions, ensuring that they continue to work as we evolve the codebase.

There is no additional product code added in this PR.

Contribution Checklist

  • The code builds clean without any errors or warnings
  • The PR follows the Contribution Guidelines
  • All unit tests pass, and I have added new tests where possible
  • Is this a breaking change? If yes, add "[BREAKING]" prefix to the title of the PR.

Copilot AI review requested due to automatic review settings November 7, 2025 21:25
@cgillum cgillum marked this pull request as ready for review November 7, 2025 21:31
@cgillum cgillum requested review from a team and westey-m November 7, 2025 21:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces comprehensive integration testing infrastructure for Azure Functions and DurableTask agents. The changes add two new integration test projects with sample validation and external client testing capabilities, along with test helper classes for logging and configuration management. Additionally, multiple sample applications are updated to use fully-qualified System.Environment for better clarity.

  • New integration test projects for Azure Functions hosting and DurableTask functionality
  • Sample validation tests that automatically start and test all Azure Functions samples
  • External client tests for agent interactions with function tools and workflows
  • Test infrastructure including custom logging providers and helper utilities

Reviewed Changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs Comprehensive integration tests that validate all Azure Functions samples by starting Docker containers, running samples, and verifying expected behavior
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests.csproj Project file for Azure Functions integration tests with ModelContextProtocol dependency
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/TestHelper.cs Test helper class providing infrastructure for starting durable agents, configuring chat clients, and capturing responses
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/Logging/TestLoggerProvider.cs Custom logger provider for capturing and querying test logs by category
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/Logging/TestLogger.cs Logger implementation that captures log entries and writes them to test output
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/Logging/LogEntry.cs Data structure representing captured log entries with timestamp and context
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/ExternalClientTests.cs Tests for external clients interacting with durable agents including function tools and workflows
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/AgentEntityTests.cs Tests verifying agent entity naming conventions and state storage
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/Microsoft.Agents.AI.DurableTask.IntegrationTests.csproj Project file for DurableTask integration tests with Azure AI OpenAI and DurableTask dependencies
dotnet/tests/Microsoft.Agents.AI.DurableTask.UnitTests/Microsoft.Agents.AI.DurableTask.UnitTests.csproj Added UserSecretsId for configuration management
dotnet/samples/AzureFunctions/07_AgentAsMcpTool/Program.cs New sample demonstrating agent exposure as MCP tools
dotnet/samples/AzureFunctions/06_LongRunningTools/Program.cs Updated to use System.Environment for consistency
dotnet/samples/AzureFunctions/05_AgentOrchestration_HITL/Program.cs Updated to use System.Environment for consistency
dotnet/samples/AzureFunctions/04_AgentOrchestration_Conditionals/Program.cs Updated to use System.Environment for consistency
dotnet/samples/AzureFunctions/03_AgentOrchestration_Concurrency/Program.cs Updated to use System.Environment for consistency
dotnet/samples/AzureFunctions/02_AgentOrchestration_Chaining/Program.cs Updated to use System.Environment for consistency
dotnet/samples/AzureFunctions/01_SingleAgent/Program.cs Updated to use System.Environment for consistency
dotnet/agent-framework-dotnet.slnx Added the two new integration test projects to the solution

@markwallace-microsoft markwallace-microsoft added the documentation Improvements or additions to documentation label Nov 8, 2025
Copilot AI review requested due to automatic review settings November 8, 2025 22:33
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 8 comments.

@cgillum cgillum requested review from kshyju and larohra November 10, 2025 16:44
@cgillum cgillum merged commit 304b809 into microsoft:feature-azure-functions Nov 10, 2025
10 checks passed
@cgillum cgillum deleted the integration-tests2 branch November 10, 2025 18:26
@cgillum cgillum added the azure-functions Issues and PRs related to Azure Functions label Nov 12, 2025
github-merge-queue bot pushed a commit that referenced this pull request Nov 13, 2025
* Python: Add Scaffolding for Durable AzureFunctions package to Agent Framework (#1823)

* Add scafolding

* update readme

* add code owners and label

* update owners

* .NET: Durable extension: initial src and unit tests (#1900)

* Python: Add Durable Agent Wrapper code (#1913)

* add initial changes

* Move code and add single sample

* Update logger

* Remove unused code

* address PR comments

* cleanup code and address comments

---------

Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>

* Azure Functions .NET samples (#1939)

* Python: Add Unit tests for Azurefunctions package (#1976)

* Add Unit tests for Azurefunctions

* remove duplicate import

* .NET: [Feature Branch] Migrate state schema updates and support for agents as MCP tools (#1979)

* Python: Add more samples for Azure Functions (#1980)

* Move all samples

* fix comments

* remove dead lines

* Make samples simpler

* .NET: [Feature Branch] Durable Task extension integration tests (#2017)

* .NET: [Feature Branch] Update OpenAI config for integration tests (#2063)

* Python: Add Integration tests for AzureFunctions  (#2020)

* Add Integration tests

* Remove DTS extension

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add pyi file for type safety

* Add samples in readme

* Updated all readme instructions

* Address comments

* Update readmes

* Fix requirements

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* .NET: [Feature Branch] Update dotnet-build-and-test.yml to support integration tests (#2070)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix DTS startup issue and improve logging (#2103)

* .NET: [Feature Branch] Introduce Azure OpenAI config for .NET pipeline (#2106)

Also fixes an issue where we were trying to start docker containers for integration tests on Windows, which doesn't work.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix uv.lock after merge

* Python: Add README for Azure Functions samples setup (#2100)

* Add README for Azure Functions samples setup

Added setup instructions for Azure Functions samples, including environment setup, virtual environment creation, and running samples.

* Update python/samples/getting_started/azure_functions/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Laveesh Rohra <larohra@microsoft.com>

* Fix or remove broken markdown file links (#2115)

* .NET: [Feature Branch] Update HTTP API to be consistent across languages (#2118)

* Python: Fix AzureFunctions Integration Tests (#2116)

* Add Identity Auth to samples

* Update python/samples/getting_started/azure_functions/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/samples/getting_started/azure_functions/01_single_agent/function_app.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/samples/getting_started/azure_functions/02_multi_agent/function_app.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/samples/getting_started/azure_functions/06_multi_agent_orchestration_conditionals/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Python: Fix Http Schema (#2112)

* Rename to threadid

* Respond in plain text

* Make snake-case

* Add http prefix

* rename to wait-for-response

* Add query param check

* address comments

* .NET: Remove IsPackable=false in preparation for nuget release (#2142)

* Python: Move `azurefunctions` to `azure` for import (#2141)

* Move import to Azure

* fix mypy

* Update python/packages/azurefunctions/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add missing types

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/packages/azurefunctions/pyproject.toml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update python/packages/azurefunctions/agent_framework_azurefunctions/__init__.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix imports

* Address PR feedback from westey-m (#2150)

- Adds a link from the /dotnet/samples/README.md to /dotnet/samples/AzureFunctions
- Make DurableAgentThread deserialization internal for future-proofing
- Update JSON serialization logic to address recently discovered issues with source generator serialization

* Address comments (#2160)

---------

Co-authored-by: Laveesh Rohra <larohra@microsoft.com>
Co-authored-by: Chris Gillum <cgillum@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Anirudh Garg <anirudhg@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

azure-functions Issues and PRs related to Azure Functions documentation Improvements or additions to documentation .NET

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants