Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dotnet/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@
<PackageVersion Include="xretry" Version="1.9.0" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="Docker.DotNet" Version="3.125.15" />
<PackageVersion Include="Humanizer" Version="2.14.1" />
<!-- Plugins -->
<PackageVersion Include="DocumentFormat.OpenXml" Version="3.3.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.10" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration.Json"/>
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets"/>
<PackageReference Include="System.Linq.AsyncEnumerable" />
<PackageReference Include="Humanizer" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,4 @@
namespace AzureAISearch.ConformanceTests;

public class AzureAISearchCollectionManagementTests(AzureAISearchFixture fixture)
: CollectionManagementTests<string>(fixture), IClassFixture<AzureAISearchFixture>
{
// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "collection-tests";
}
: CollectionManagementTests<string>(fixture), IClassFixture<AzureAISearchFixture>;
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ public class AzureAISearchDistanceFunctionTests(AzureAISearchDistanceFunctionTes

public new class Fixture() : DistanceFunctionTests<string>.Fixture
{
public override string CollectionName => "distance-functions-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;

// AzureAISearch does not return the expected standard mathematical result for each distance function
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ public override Task SearchAsync_string_without_generator_throws()
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "embedding-gen-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator)
=> AzureAISearchTestStore.Instance.GetVectorStore(new() { EmbeddingGenerator = embeddingGenerator });

Expand All @@ -46,9 +43,6 @@ public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGene
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "search-only-embedding-gen-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override VectorStore CreateVectorStore(IEmbeddingGenerator? embeddingGenerator)
=> AzureAISearchTestStore.Instance.GetVectorStore(new() { EmbeddingGenerator = embeddingGenerator });

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,5 @@ public override Task Contains_over_inline_int_array()
public new class Fixture : FilterTests<string>.Fixture
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "filter-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft. All rights reserved.

using AzureAISearch.ConformanceTests.Support;
using VectorData.ConformanceTests;
using VectorData.ConformanceTests.Support;
using Xunit;

namespace AzureAISearch.ConformanceTests;

public class AzureAISearchHybridSearchTests(
AzureAISearchHybridSearchTests.VectorAndStringFixture vectorAndStringFixture,
AzureAISearchHybridSearchTests.MultiTextFixture multiTextFixture)
: HybridSearchTests<string>(vectorAndStringFixture, multiTextFixture),
IClassFixture<AzureAISearchHybridSearchTests.VectorAndStringFixture>,
IClassFixture<AzureAISearchHybridSearchTests.MultiTextFixture>
{
public new class VectorAndStringFixture : HybridSearchTests<string>.VectorAndStringFixture
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;
}

public new class MultiTextFixture : HybridSearchTests<string>.MultiTextFixture
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ public virtual Task Hnsw()

public new class Fixture() : IndexKindTests<string>.Fixture
{
public override string CollectionName => "index-kind-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ public class AzureAISearchBasicModelTests(AzureAISearchBasicModelTests.Fixture f
{
public new class Fixture : BasicModelTests<string>.Fixture
{
public override string CollectionName => "basic-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ public class AzureAISearchDynamicModelTests(AzureAISearchDynamicModelTests.Fixtu
{
public new class Fixture : DynamicModelTests<string>.Fixture
{
public override string CollectionName => "dynamic-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ public class AzureAISearchNoDataModelTests(AzureAISearchNoDataModelTests.Fixture
{
public new class Fixture : NoDataModelTests<string>.Fixture
{
public override string CollectionName => "nodata-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ public class AzureAISearchNoVectorModelTests(AzureAISearchNoVectorModelTests.Fix
{
public new class Fixture : NoVectorModelTests<string>.Fixture
{
public override string CollectionName => "novector-" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override TestStore TestStore => AzureAISearchTestStore.Instance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace AzureAISearch.ConformanceTests.Support;
internal static class AzureAISearchTestEnvironment
{
#pragma warning disable CA1308 // Normalize strings to uppercase
public static readonly string TestIndexPostfix = new Regex("[^a-zA-Z0-9]").Replace(Environment.MachineName.ToLowerInvariant(), "");
public static readonly string TestIndexPostfix = '-' + new Regex("[^a-zA-Z0-9]").Replace(Environment.MachineName.ToLowerInvariant(), "");
#pragma warning restore CA1308 // Normalize strings to uppercase

public static readonly string? ServiceUrl, ApiKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Azure;
using Azure.Identity;
using Azure.Search.Documents.Indexes;
using Humanizer;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.AzureAISearch;
using VectorData.ConformanceTests.Support;
Expand Down Expand Up @@ -44,6 +45,11 @@ protected override Task StartAsync()
return Task.CompletedTask;
}

// Azure AI search only supports lowercase letters, digits or dashes.
// Also, add a suffix containing machine name to allow multiple developers to work against the same cloud instance.
public override string AdjustCollectionName(string baseName)
=> baseName.Kebaberize() + AzureAISearchTestEnvironment.TestIndexPostfix;

public override async Task WaitForDataAsync<TKey, TRecord>(
VectorStoreCollection<TKey, TRecord> collection,
int recordCount,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ public class AzureAISearchDataTypeTests(AzureAISearchDataTypeTests.Fixture fixtu
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "data-type-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;

public override IList<VectorStoreDataProperty> GetDataProperties()
=> base.GetDataProperties().Where(p =>
p.Type != typeof(byte)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,5 @@ public class AzureAISearchEmbeddingTypeTests(AzureAISearchEmbeddingTypeTests.Fix
public new class Fixture : EmbeddingTypeTests<string>.Fixture
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "embedding-type-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,5 @@ public class AzureAISearchKeyTypeTests(AzureAISearchKeyTypeTests.Fixture fixture
public new class Fixture : KeyTypeTests.Fixture
{
public override TestStore TestStore => AzureAISearchTestStore.Instance;

// Azure AI search only supports lowercase letters, digits or dashes.
public override string CollectionName => "key-type-tests" + AzureAISearchTestEnvironment.TestIndexPostfix;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.

using VectorData.ConformanceTests;
using VectorData.ConformanceTests.HybridSearch;
using VectorData.ConformanceTests.ModelTests;

namespace CosmosMongoDB.ConformanceTests;
Expand All @@ -13,6 +12,6 @@ public class CosmosMongoTestSuiteImplementationTests : TestSuiteImplementationTe
typeof(DynamicModelTests<>),

// Hybrid search not supported
typeof(KeywordVectorizedHybridSearchComplianceTests<>),
typeof(HybridSearchTests<>),
];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft. All rights reserved.

using CosmosNoSql.ConformanceTests.Support;
using VectorData.ConformanceTests;
using VectorData.ConformanceTests.Support;
using Xunit;

namespace CosmosNoSql.ConformanceTests;

public class CosmosNoSqlHybridSearchTests(
CosmosNoSqlHybridSearchTests.VectorAndStringFixture vectorAndStringFixture,
CosmosNoSqlHybridSearchTests.MultiTextFixture multiTextFixture)
: HybridSearchTests<string>(vectorAndStringFixture, multiTextFixture),
IClassFixture<CosmosNoSqlHybridSearchTests.VectorAndStringFixture>,
IClassFixture<CosmosNoSqlHybridSearchTests.MultiTextFixture>
{
public new class VectorAndStringFixture : HybridSearchTests<string>.VectorAndStringFixture
{
public override TestStore TestStore => CosmosNoSqlTestStore.Instance;
}

public new class MultiTextFixture : HybridSearchTests<string>.MultiTextFixture
{
public override TestStore TestStore => CosmosNoSqlTestStore.Instance;
}
}

This file was deleted.

5 changes: 4 additions & 1 deletion dotnet/test/VectorData/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
<NoWarn>$(NoWarn);CA1863</NoWarn> <!-- Cache a 'CompositeFormat' for repeated use in this formatting operation -->
<NoWarn>$(NoWarn);CA2007;VSTHRD111</NoWarn> <!-- Consider calling ConfigureAwait on the awaited task -->
<NoWarn>$(NoWarn);CS1591</NoWarn> <!-- Missing XML comment for publicly visible type or member -->
<NoWarn>$(NoWarn);IDE1006</NoWarn> <!-- Naming rule violation: Missing suffix: 'Async' -->
<NoWarn>$(NoWarn);IDE1006</NoWarn> <!-- Naming rule violation: Missing suffix: 'Async' -->

<!-- Remove this after switching to C# 14 -->
<NoWarn>$(NoWarn);IDE0340</NoWarn> <!-- Use unbound generic type -->
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.

using VectorData.ConformanceTests;
using VectorData.ConformanceTests.HybridSearch;

namespace InMemory.ConformanceTests;

Expand All @@ -13,6 +12,6 @@ public class InMemoryTestSuiteImplementationTests : TestSuiteImplementationTests
typeof(DependencyInjectionTests<>),

// Hybrid search not supported
typeof(KeywordVectorizedHybridSearchComplianceTests<>)
typeof(HybridSearchTests<>)
];
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public override async Task GetAsync_single_record(bool includeVectors)
// InMemory always returns the vectors (IncludeVectors = false isn't respected)
var expectedRecord = fixture.TestData[0];
var received = await fixture.Collection.GetAsync(
(int)expectedRecord[DynamicDataModelFixture<int>.KeyPropertyName]!,
(int)expectedRecord[KeyPropertyName]!,
new() { IncludeVectors = false });

AssertEquivalent(expectedRecord, received, includeVectors: true, fixture.TestStore.VectorsComparable);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) Microsoft. All rights reserved.

using MongoDB.ConformanceTests.Support;
using VectorData.ConformanceTests;
using VectorData.ConformanceTests.Support;
using Xunit;

namespace MongoDB.ConformanceTests;

public class MongoHybridSearchTests(
MongoHybridSearchTests.VectorAndStringFixture vectorAndStringFixture,
MongoHybridSearchTests.MultiTextFixture multiTextFixture)
: HybridSearchTests<string>(vectorAndStringFixture, multiTextFixture),
IClassFixture<MongoHybridSearchTests.VectorAndStringFixture>,
IClassFixture<MongoHybridSearchTests.MultiTextFixture>
{
public new class VectorAndStringFixture : HybridSearchTests<string>.VectorAndStringFixture
{
public override TestStore TestStore => MongoTestStore.Instance;
}

public new class MultiTextFixture : HybridSearchTests<string>.MultiTextFixture
{
public override TestStore TestStore => MongoTestStore.Instance;
}
}
Loading
Loading