-
Notifications
You must be signed in to change notification settings - Fork 739
.NET: [Feature Branch] Durable Task extension integration tests #2017
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.NET: [Feature Branch] Durable Task extension integration tests #2017
Conversation
There was a problem hiding this 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 |
...ents.AI.DurableTask.IntegrationTests/Microsoft.Agents.AI.DurableTask.IntegrationTests.csproj
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/TestHelper.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/ExternalClientTests.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.DurableTask.IntegrationTests/ExternalClientTests.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Outdated
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Show resolved
Hide resolved
…-framework into integration-tests2
There was a problem hiding this 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.
dotnet/samples/AzureFunctions/03_AgentOrchestration_Concurrency/Program.cs
Show resolved
Hide resolved
dotnet/samples/AzureFunctions/04_AgentOrchestration_Conditionals/Program.cs
Show resolved
Hide resolved
dotnet/tests/Microsoft.Agents.AI.Hosting.AzureFunctions.IntegrationTests/SamplesValidation.cs
Show resolved
Hide resolved
* 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>
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:
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