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
28 changes: 26 additions & 2 deletions src/Testcontainers.Milvus/MilvusBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,9 @@ protected override MilvusBuilder Init()
.WithEnvironment("ETCD_CONFIG_PATH", MilvusEtcdConfigFilePath)
.WithEnvironment("ETCD_DATA_DIR", "/var/lib/milvus/etcd")
.WithResourceMapping(EtcdConfig, MilvusEtcdConfigFilePath)
.WithWaitStrategy(Wait.ForUnixContainer().UntilHttpRequestIsSucceeded(request =>
request.ForPort(MilvusManagementPort).ForPath("/healthz")));
.WithWaitStrategy(Wait.ForUnixContainer().UntilContainerIsHealthy())
.WithCreateParameterModifier(parameterModifier =>
parameterModifier.Healthcheck = Healthcheck.Instance);
}

/// <inheritdoc />
Expand All @@ -92,4 +93,27 @@ protected override MilvusBuilder Merge(MilvusConfiguration oldValue, MilvusConfi
{
return new MilvusBuilder(new MilvusConfiguration(oldValue, newValue));
}

/// <summary>
/// This setup mirrors the behavior of Milvus's official configuration:
/// https://github.com/milvus-io/milvus/blob/4def0255a928287f982f1d6b8c53ed32127bb84d/scripts/standalone_embed.sh#L56-L60
/// </summary>
private sealed class Healthcheck : HealthcheckConfig
{
private Healthcheck()
{
const long ninetySeconds = 90 * 1_000_000_000L;
Test = ["CMD-SHELL", $"curl -f http://localhost:{MilvusManagementPort}/healthz"];
Interval = TimeSpan.FromSeconds(30);
Timeout = TimeSpan.FromSeconds(20);
StartPeriod = ninetySeconds;
Retries = 3;
}

/// <summary>
/// Gets the <see cref="HealthcheckConfig" /> instance.
/// </summary>
public static HealthcheckConfig Instance { get; }
= new Healthcheck();
}
}
7 changes: 2 additions & 5 deletions tests/Testcontainers.Milvus.Tests/MilvusContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ namespace Testcontainers.Milvus;

public abstract class MilvusContainerTest : IAsyncLifetime
{
private const string MilvusVersion = "v2.3.10";

private readonly MilvusContainer _milvusContainer;

private MilvusContainerTest(MilvusContainer milvusContainer)
Expand Down Expand Up @@ -37,7 +35,7 @@ public async Task GetVersionReturnsExpectedVersion()
.ConfigureAwait(true);

// Then
Assert.Equal(MilvusVersion, version);
Assert.EndsWith(version, MilvusBuilder.MilvusImage);
}

protected virtual ValueTask DisposeAsyncCore()
Expand All @@ -49,7 +47,7 @@ protected virtual ValueTask DisposeAsyncCore()
public sealed class MilvusDefaultConfiguration : MilvusContainerTest
{
public MilvusDefaultConfiguration()
: base(new MilvusBuilder().WithImage("milvusdb/milvus:" + MilvusVersion).Build())
: base(new MilvusBuilder().Build())
{
}
}
Expand All @@ -64,7 +62,6 @@ public MilvusSidecarConfiguration()

private MilvusSidecarConfiguration(INetwork network)
: base(new MilvusBuilder()
.WithImage("milvusdb/milvus:" + MilvusVersion)
.WithEtcdEndpoint("etcd:2379")
.DependsOn(new ContainerBuilder()
.WithImage("quay.io/coreos/etcd:v3.5.5")
Expand Down