chore: import upstream snapshot with attribution
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:21:23 +08:00
commit b957a53def
5423 changed files with 863745 additions and 0 deletions
@@ -0,0 +1,48 @@
// Copyright (c) Microsoft. All rights reserved.
using Docker.DotNet.Models;
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Configurations;
namespace Weaviate.ConformanceTests.Support.TestContainer;
public sealed class WeaviateBuilder : ContainerBuilder<WeaviateBuilder, WeaviateContainer, WeaviateConfiguration>
{
public const string WeaviateImage = "semitechnologies/weaviate:1.28.12";
public const ushort WeaviateHttpPort = 8080;
public const ushort WeaviateGrpcPort = 50051;
public WeaviateBuilder() : this(new WeaviateConfiguration()) => this.DockerResourceConfiguration = this.Init().DockerResourceConfiguration;
private WeaviateBuilder(WeaviateConfiguration dockerResourceConfiguration) : base(dockerResourceConfiguration)
=> this.DockerResourceConfiguration = dockerResourceConfiguration;
public override WeaviateContainer Build()
{
this.Validate();
return new WeaviateContainer(this.DockerResourceConfiguration);
}
protected override WeaviateBuilder Init()
=> base.Init()
.WithImage(WeaviateImage)
.WithPortBinding(WeaviateHttpPort, true)
.WithPortBinding(WeaviateGrpcPort, true)
.WithEnvironment("AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED", "true")
.WithEnvironment("PERSISTENCE_DATA_PATH", "/var/lib/weaviate")
.WithWaitStrategy(Wait.ForUnixContainer()
.UntilInternalTcpPortIsAvailable(WeaviateHttpPort)
.UntilInternalTcpPortIsAvailable(WeaviateGrpcPort)
.UntilHttpRequestIsSucceeded(r => r.ForPath("/v1/.well-known/ready").ForPort(WeaviateHttpPort)));
protected override WeaviateBuilder Clone(IResourceConfiguration<CreateContainerParameters> resourceConfiguration)
=> this.Merge(this.DockerResourceConfiguration, new WeaviateConfiguration(resourceConfiguration));
protected override WeaviateBuilder Merge(WeaviateConfiguration oldValue, WeaviateConfiguration newValue)
=> new(new WeaviateConfiguration(oldValue, newValue));
protected override WeaviateConfiguration DockerResourceConfiguration { get; }
protected override WeaviateBuilder Clone(IContainerConfiguration resourceConfiguration)
=> this.Merge(this.DockerResourceConfiguration, new WeaviateConfiguration(resourceConfiguration));
}
@@ -0,0 +1,53 @@
// Copyright (c) Microsoft. All rights reserved.
using Docker.DotNet.Models;
using DotNet.Testcontainers.Configurations;
namespace Weaviate.ConformanceTests.Support.TestContainer;
public sealed class WeaviateConfiguration : ContainerConfiguration
{
/// <summary>
/// Initializes a new instance of the <see cref="WeaviateConfiguration" /> class.
/// </summary>
public WeaviateConfiguration()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="WeaviateConfiguration" /> class.
/// </summary>
/// <param name="resourceConfiguration">The Docker resource configuration.</param>
public WeaviateConfiguration(IResourceConfiguration<CreateContainerParameters> resourceConfiguration)
: base(resourceConfiguration)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="WeaviateConfiguration" /> class.
/// </summary>
/// <param name="resourceConfiguration">The Docker resource configuration.</param>
public WeaviateConfiguration(IContainerConfiguration resourceConfiguration)
: base(resourceConfiguration)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="WeaviateConfiguration" /> class.
/// </summary>
/// <param name="resourceConfiguration">The Docker resource configuration.</param>
public WeaviateConfiguration(WeaviateConfiguration resourceConfiguration)
: this(new WeaviateConfiguration(), resourceConfiguration)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="WeaviateConfiguration" /> class.
/// </summary>
/// <param name="oldValue">The old Docker resource configuration.</param>
/// <param name="newValue">The new Docker resource configuration.</param>
public WeaviateConfiguration(WeaviateConfiguration oldValue, WeaviateConfiguration newValue)
: base(oldValue, newValue)
{
}
}
@@ -0,0 +1,7 @@
// Copyright (c) Microsoft. All rights reserved.
using DotNet.Testcontainers.Containers;
namespace Weaviate.ConformanceTests.Support.TestContainer;
public class WeaviateContainer(WeaviateConfiguration configuration) : DockerContainer(configuration);
@@ -0,0 +1,41 @@
// Copyright (c) Microsoft. All rights reserved.
#if NET472
using System.Net.Http;
#endif
using Microsoft.SemanticKernel.Connectors.Weaviate;
using VectorData.ConformanceTests.Support;
using Weaviate.ConformanceTests.Support.TestContainer;
namespace Weaviate.ConformanceTests.Support;
#pragma warning restore CA2213 // Disposable fields should be disposed
public sealed class WeaviateTestStore : TestStore
{
public static WeaviateTestStore NamedVectorsInstance { get; } = new(hasNamedVectors: true);
public static WeaviateTestStore UnnamedVectorInstance { get; } = new(hasNamedVectors: false);
public override string DefaultDistanceFunction => Microsoft.Extensions.VectorData.DistanceFunction.CosineDistance;
private readonly WeaviateContainer _container = new WeaviateBuilder().Build();
private readonly bool _hasNamedVectors;
public HttpClient? _httpClient { get; private set; }
public HttpClient Client => this._httpClient ?? throw new InvalidOperationException("Not initialized");
public WeaviateVectorStore GetVectorStore(WeaviateVectorStoreOptions options)
=> new(this.Client, options);
private WeaviateTestStore(bool hasNamedVectors) => this._hasNamedVectors = hasNamedVectors;
protected override async Task StartAsync()
{
await this._container.StartAsync();
this._httpClient = new HttpClient { BaseAddress = new Uri($"http://localhost:{this._container.GetMappedPublicPort(WeaviateBuilder.WeaviateHttpPort)}/v1/") };
this.DefaultVectorStore = new WeaviateVectorStore(this._httpClient, new() { HasNamedVectors = this._hasNamedVectors });
}
protected override Task StopAsync()
=> this._container.StopAsync();
}