Skip to content

Commit 6dc65db

Browse files
authored
.NET: Increase credential timeout for Integration Tests (#4472)
* Increase credential timeout for Integration Tests * Fix format error. * Update further tests * Fix comment * Rename credentials file and class. * Fix broken reference.
1 parent d02051d commit 6dc65db

24 files changed

Lines changed: 68 additions & 31 deletions

dotnet/agent-framework-dotnet.slnx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,10 @@
413413
<File Path="src/Shared/IntegrationTests/OpenAIConfiguration.cs" />
414414
<File Path="src/Shared/IntegrationTests/README.md" />
415415
</Folder>
416+
<Folder Name="/Solution Items/src/Shared/IntegrationTestsAzureCredentials/">
417+
<File Path="src/Shared/IntegrationTestsAzureCredentials/README.md" />
418+
<File Path="src/Shared/IntegrationTestsAzureCredentials/TestAzureCliCredentials.cs" />
419+
</Folder>
416420
<Folder Name="/Solution Items/src/Shared/Samples/">
417421
<File Path="src/Shared/Samples/BaseSample.cs" />
418422
<File Path="src/Shared/Samples/README.md" />

dotnet/eng/MSBuild/Shared.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
<ItemGroup Condition="'$(InjectSharedIntegrationTestCode)' == 'true'">
99
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\Shared\IntegrationTests\*.cs" LinkBase="Shared\IntegrationTests" />
1010
</ItemGroup>
11+
<ItemGroup Condition="'$(InjectSharedIntegrationTestAzureCredentialsCode)' == 'true'">
12+
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\Shared\IntegrationTestsAzureCredentials\*.cs" LinkBase="Shared\IntegrationTestsAzureCredentials" />
13+
</ItemGroup>
1114
<ItemGroup Condition="'$(InjectSharedBuildTestCode)' == 'true'">
1215
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\Shared\CodeTests\*.cs" LinkBase="Shared\CodeTests" />
1316
</ItemGroup>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Integration Tests Azure Credentials
2+
3+
Adds a helper for loading Azure credentials in integration tests.
4+
5+
```xml
6+
<PropertyGroup>
7+
<InjectSharedIntegrationTestAzureCredentialsCode>true</InjectSharedIntegrationTestAzureCredentialsCode>
8+
</PropertyGroup>
9+
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright (c) Microsoft. All rights reserved.
2+
3+
#pragma warning disable IDE0005 // This is required in some projects and not in others.
4+
using System;
5+
#pragma warning restore IDE0005
6+
using Azure.Identity;
7+
8+
namespace Shared.IntegrationTests;
9+
10+
/// <summary>
11+
/// Provides credential instances for integration tests with
12+
/// increased timeouts to avoid CI pipeline authentication failures.
13+
/// </summary>
14+
internal static class TestAzureCliCredentials
15+
{
16+
/// <summary>
17+
/// The default timeout for Azure CLI credential operations.
18+
/// Increased from the default (~13s) to accommodate CI pipeline latency.
19+
/// </summary>
20+
private static readonly TimeSpan s_processTimeout = TimeSpan.FromSeconds(60);
21+
22+
/// <summary>
23+
/// Creates a new <see cref="AzureCliCredential"/> with an increased process timeout
24+
/// suitable for CI environments.
25+
/// </summary>
26+
public static AzureCliCredential CreateAzureCliCredential() =>
27+
new(new AzureCliCredentialOptions { ProcessTimeout = s_processTimeout });
28+
}

dotnet/tests/AzureAI.IntegrationTests/AIProjectClientCreateTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using AgentConformance.IntegrationTests.Support;
77
using Azure.AI.Projects;
88
using Azure.AI.Projects.OpenAI;
9-
using Azure.Identity;
109
using Microsoft.Agents.AI;
1110
using Microsoft.Extensions.AI;
1211
using OpenAI.Files;
@@ -17,7 +16,7 @@ namespace AzureAI.IntegrationTests;
1716

1817
public class AIProjectClientCreateTests
1918
{
20-
private readonly AIProjectClient _client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), new AzureCliCredential());
19+
private readonly AIProjectClient _client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), TestAzureCliCredentials.CreateAzureCliCredential());
2120

2221
[Theory]
2322
[InlineData("CreateWithChatClientAgentOptionsAsync")]

dotnet/tests/AzureAI.IntegrationTests/AIProjectClientFixture.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using AgentConformance.IntegrationTests.Support;
99
using Azure.AI.Projects;
1010
using Azure.AI.Projects.OpenAI;
11-
using Azure.Identity;
1211
using Microsoft.Agents.AI;
1312
using Microsoft.Extensions.AI;
1413
using OpenAI.Responses;
@@ -168,13 +167,13 @@ public Task DisposeAsync()
168167

169168
public virtual async Task InitializeAsync()
170169
{
171-
this._client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), new AzureCliCredential());
170+
this._client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), TestAzureCliCredentials.CreateAzureCliCredential());
172171
this._agent = await this.CreateChatClientAgentAsync();
173172
}
174173

175174
public async Task InitializeAsync(ChatClientAgentOptions options)
176175
{
177-
this._client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), new AzureCliCredential());
176+
this._client = new(new Uri(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint)), TestAzureCliCredentials.CreateAzureCliCredential());
178177
this._agent = await this.CreateChatClientAgentAsync(options);
179178
}
180179
}

dotnet/tests/AzureAI.IntegrationTests/AzureAI.IntegrationTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
<PropertyGroup>
44
<InjectSharedIntegrationTestCode>True</InjectSharedIntegrationTestCode>
5+
<InjectSharedIntegrationTestAzureCredentialsCode>True</InjectSharedIntegrationTestAzureCredentialsCode>
56
</PropertyGroup>
67

78
<ItemGroup>

dotnet/tests/AzureAIAgentsPersistent.IntegrationTests/AzureAIAgentsPersistent.IntegrationTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
<PropertyGroup>
44
<InjectSharedIntegrationTestCode>True</InjectSharedIntegrationTestCode>
5+
<InjectSharedIntegrationTestAzureCredentialsCode>True</InjectSharedIntegrationTestAzureCredentialsCode>
56
</PropertyGroup>
67

78
<ItemGroup>

dotnet/tests/AzureAIAgentsPersistent.IntegrationTests/AzureAIAgentsPersistentCreateTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Threading.Tasks;
77
using AgentConformance.IntegrationTests.Support;
88
using Azure.AI.Agents.Persistent;
9-
using Azure.Identity;
109
using Microsoft.Agents.AI;
1110
using Microsoft.Extensions.AI;
1211
using Shared.IntegrationTests;
@@ -15,7 +14,7 @@ namespace AzureAIAgentsPersistent.IntegrationTests;
1514

1615
public class AzureAIAgentsPersistentCreateTests
1716
{
18-
private readonly PersistentAgentsClient _persistentAgentsClient = new(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint), new AzureCliCredential());
17+
private readonly PersistentAgentsClient _persistentAgentsClient = new(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint), TestAzureCliCredentials.CreateAzureCliCredential());
1918

2019
[Theory]
2120
[InlineData("CreateWithChatClientAgentOptionsAsync")]

dotnet/tests/AzureAIAgentsPersistent.IntegrationTests/AzureAIAgentsPersistentFixture.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using AgentConformance.IntegrationTests.Support;
77
using Azure;
88
using Azure.AI.Agents.Persistent;
9-
using Azure.Identity;
109
using Microsoft.Agents.AI;
1110
using Microsoft.Extensions.AI;
1211
using Shared.IntegrationTests;
@@ -96,7 +95,7 @@ public Task DisposeAsync()
9695

9796
public async Task InitializeAsync()
9897
{
99-
this._persistentAgentsClient = new(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint), new AzureCliCredential());
98+
this._persistentAgentsClient = new(TestConfiguration.GetRequiredValue(TestSettings.AzureAIProjectEndpoint), TestAzureCliCredentials.CreateAzureCliCredential());
10099
this._agent = await this.CreateChatClientAgentAsync();
101100
}
102101
}

0 commit comments

Comments
 (0)