Skip to content

Commit 0d8b294

Browse files
authored
Extract Aspire.Hosting.SqlServer.Tests project (#5056)
1 parent dcb8793 commit 0d8b294

20 files changed

+361
-168
lines changed

Aspire.sln

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.PostgreSQL.T
521521
EndProject
522522
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Qdrant.Tests", "tests\Aspire.Hosting.Qdrant.Tests\Aspire.Hosting.Qdrant.Tests.csproj", "{8E2AA85E-C351-47B4-AF91-58557FAD5840}"
523523
EndProject
524-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.Milvus.Tests", "tests\Aspire.Hosting.Milvus.Tests\Aspire.Hosting.Milvus.Tests.csproj", "{986886B7-0E38-4890-92C3-5B46DE322DAF}"
524+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Milvus.Tests", "tests\Aspire.Hosting.Milvus.Tests\Aspire.Hosting.Milvus.Tests.csproj", "{986886B7-0E38-4890-92C3-5B46DE322DAF}"
525525
EndProject
526526
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.MySql.Tests", "tests\Aspire.Hosting.MySql.Tests\Aspire.Hosting.MySql.Tests.csproj", "{F3F33CF8-A2BB-4351-8501-A6884C5126FE}"
527527
EndProject
@@ -551,6 +551,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.MongoDB.Test
551551
EndProject
552552
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.Nats.Tests", "tests\Aspire.Hosting.Nats.Tests\Aspire.Hosting.Nats.Tests.csproj", "{F492357C-682E-4CBB-A374-1A124B3976A3}"
553553
EndProject
554+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting.SqlServer.Tests", "tests\Aspire.Hosting.SqlServer.Tests\Aspire.Hosting.SqlServer.Tests.csproj", "{D705FE42-CD54-4575-BA18-0431256B40B2}"
555+
EndProject
554556
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aspire.Hosting.Azure.Tests", "tests\Aspire.Hosting.Azure.Tests\Aspire.Hosting.Azure.Tests.csproj", "{8691F993-7B19-496E-B8E1-EF1199ACF2E1}"
555557
EndProject
556558
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestShop.AppHost", "playground\TestShop\TestShop.AppHost\TestShop.AppHost.csproj", "{DB3E1AD8-87F6-414D-B46F-A0DC334AECCD}"
@@ -1461,6 +1463,10 @@ Global
14611463
{F492357C-682E-4CBB-A374-1A124B3976A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
14621464
{F492357C-682E-4CBB-A374-1A124B3976A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
14631465
{F492357C-682E-4CBB-A374-1A124B3976A3}.Release|Any CPU.Build.0 = Release|Any CPU
1466+
{D705FE42-CD54-4575-BA18-0431256B40B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1467+
{D705FE42-CD54-4575-BA18-0431256B40B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
1468+
{D705FE42-CD54-4575-BA18-0431256B40B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
1469+
{D705FE42-CD54-4575-BA18-0431256B40B2}.Release|Any CPU.Build.0 = Release|Any CPU
14641470
{8691F993-7B19-496E-B8E1-EF1199ACF2E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
14651471
{8691F993-7B19-496E-B8E1-EF1199ACF2E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
14661472
{8691F993-7B19-496E-B8E1-EF1199ACF2E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1758,6 +1764,7 @@ Global
17581764
{48FF09E9-7D33-4A3F-9FF2-4C43A219C7B7} = {C424395C-1235-41A4-BF55-07880A04368C}
17591765
{DD9BC533-8072-481C-9A7E-F95DC36B34C0} = {830A89EC-4029-4753-B25A-068BAE37DEC7}
17601766
{F492357C-682E-4CBB-A374-1A124B3976A3} = {830A89EC-4029-4753-B25A-068BAE37DEC7}
1767+
{D705FE42-CD54-4575-BA18-0431256B40B2} = {830A89EC-4029-4753-B25A-068BAE37DEC7}
17611768
{8691F993-7B19-496E-B8E1-EF1199ACF2E1} = {830A89EC-4029-4753-B25A-068BAE37DEC7}
17621769
{DB3E1AD8-87F6-414D-B46F-A0DC334AECCD} = {A68BA1A5-1604-433D-9778-DC0199831C2A}
17631770
{D537CF4D-DF30-41C7-B4F9-FEB152A19BE7} = {57A42144-739E-49A7-BADB-BB8F5F20FA17}

src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,21 @@ public static IResourceBuilder<SqlServerServerResource> WithDataVolume(this IRes
7171
/// <param name="isReadOnly">A flag that indicates if this is a read-only mount.</param>
7272
/// <returns>The <see cref="IResourceBuilder{T}"/>.</returns>
7373
public static IResourceBuilder<SqlServerServerResource> WithDataBindMount(this IResourceBuilder<SqlServerServerResource> builder, string source, bool isReadOnly = false)
74-
=> builder.WithBindMount(source, "/var/opt/mssql", isReadOnly);
74+
{
75+
// c.f. https://learn.microsoft.com/sql/linux/sql-server-linux-docker-container-configure?view=sql-server-ver15&pivots=cs1-bash#mount-a-host-directory-as-data-volume
76+
77+
foreach (var dir in new string[] { "data", "log", "secrets" })
78+
{
79+
var path = Path.Combine(source, dir);
80+
81+
if (!Directory.Exists(path))
82+
{
83+
Directory.CreateDirectory(path);
84+
}
85+
86+
builder.WithBindMount(path, $"/var/opt/mssql/{dir}", isReadOnly);
87+
}
88+
89+
return builder;
90+
}
7591
}

tests/Aspire.EndToEnd.Tests/IntegrationServicesFixture.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ public Task DumpComponentLogsAsync(TestResourceNames resource, ITestOutputHelper
107107
TestResourceNames.oracledatabase => "oracledatabase",
108108
TestResourceNames.postgres or TestResourceNames.efnpgsql => "postgres",
109109
TestResourceNames.redis => "redis",
110-
TestResourceNames.sqlserver or TestResourceNames.efsqlserver => "sqlserver",
111110
_ => throw new ArgumentException($"Unknown resource: {resource}")
112111
};
113112

@@ -142,9 +141,7 @@ private static TestResourceNames GetResourcesToSkip()
142141
"eventhubs" => TestResourceNames.eventhubs,
143142
"basicservices" => TestResourceNames.redis
144143
| TestResourceNames.postgres
145-
| TestResourceNames.efnpgsql
146-
| TestResourceNames.sqlserver
147-
| TestResourceNames.efsqlserver,
144+
| TestResourceNames.efnpgsql,
148145
"" or null => TestResourceNames.All,
149146
_ => throw new ArgumentException($"Unknown test scenario '{TestScenario}'")
150147
};

tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public IntegrationServicesTests(ITestOutputHelper testOutput, IntegrationService
2626
[InlineData(TestResourceNames.postgres)]
2727
[InlineData(TestResourceNames.efnpgsql)]
2828
[InlineData(TestResourceNames.redis)]
29-
[InlineData(TestResourceNames.sqlserver)]
30-
[InlineData(TestResourceNames.efsqlserver)]
3129
public Task VerifyComponentWorks(TestResourceNames resourceName)
3230
=> RunTestAsync(async () =>
3331
{

tests/Aspire.Hosting.Tests/SqlServer/AddSqlServerTests.cs renamed to tests/Aspire.Hosting.SqlServer.Tests/AddSqlServerTests.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using Aspire.Hosting.ApplicationModel;
45
using Aspire.Hosting.Tests.Utils;
56
using Aspire.Hosting.Utils;
67
using Microsoft.Extensions.DependencyInjection;
78
using System.Net.Sockets;
89
using Xunit;
910

10-
namespace Aspire.Hosting.Tests.SqlServer;
11+
namespace Aspire.Hosting.SqlServer.Tests;
1112

1213
public class AddSqlServerTests
1314
{
@@ -18,7 +19,7 @@ public void AddSqlServerAddsGeneratedPasswordParameterWithUserSecretsParameterDe
1819

1920
var sql = appBuilder.AddSqlServer("sql");
2021

21-
Assert.IsType<UserSecretsParameterDefault>(sql.Resource.PasswordParameter.Default);
22+
Assert.Equal("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
2223
}
2324

2425
[Fact]
@@ -28,7 +29,7 @@ public void AddSqlServerDoesNotAddGeneratedPasswordParameterWithUserSecretsParam
2829

2930
var sql = appBuilder.AddSqlServer("sql");
3031

31-
Assert.IsNotType<UserSecretsParameterDefault>(sql.Resource.PasswordParameter.Default);
32+
Assert.NotEqual("Aspire.Hosting.ApplicationModel.UserSecretsParameterDefault", sql.Resource.PasswordParameter.Default?.GetType().FullName);
3233
}
3334

3435
[Fact]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>$(NetCurrent)</TargetFramework>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<ProjectReference Include="..\..\src\Aspire.Hosting.SqlServer\Aspire.Hosting.SqlServer.csproj" />
9+
<ProjectReference Include="..\..\src\Components\Aspire.Microsoft.Data.SqlClient\Aspire.Microsoft.Data.SqlClient.csproj" />
10+
<ProjectReference Include="..\..\src\Components\Aspire.Microsoft.EntityFrameworkCore.SqlServer\Aspire.Microsoft.EntityFrameworkCore.SqlServer.csproj" />
11+
<ProjectReference Include="..\Aspire.Hosting.Tests\Aspire.Hosting.Tests.csproj" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<Compile Include="$(RepoRoot)src\Aspire.Hosting.SqlServer\SqlServerContainerImageTags.cs" />
16+
<Compile Include="$(SharedDir)VolumeNameGenerator.cs" Link="Utils\VolumeNameGenerator.cs" />
17+
</ItemGroup>
18+
19+
</Project>

0 commit comments

Comments
 (0)