Skip to content

Commit 5e7aad7

Browse files
fix(Milvus): Use healthcheck wait strategy (#1585)
Co-authored-by: Andre Hofmeister <[email protected]>
1 parent 1efe60c commit 5e7aad7

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

src/Testcontainers.Milvus/MilvusBuilder.cs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ protected override MilvusBuilder Init()
7171
.WithEnvironment("ETCD_CONFIG_PATH", MilvusEtcdConfigFilePath)
7272
.WithEnvironment("ETCD_DATA_DIR", "/var/lib/milvus/etcd")
7373
.WithResourceMapping(EtcdConfig, MilvusEtcdConfigFilePath)
74-
.WithWaitStrategy(Wait.ForUnixContainer().UntilHttpRequestIsSucceeded(request =>
75-
request.ForPort(MilvusManagementPort).ForPath("/healthz")));
74+
.WithWaitStrategy(Wait.ForUnixContainer().UntilContainerIsHealthy())
75+
.WithCreateParameterModifier(parameterModifier =>
76+
parameterModifier.Healthcheck = Healthcheck.Instance);
7677
}
7778

7879
/// <inheritdoc />
@@ -92,4 +93,27 @@ protected override MilvusBuilder Merge(MilvusConfiguration oldValue, MilvusConfi
9293
{
9394
return new MilvusBuilder(new MilvusConfiguration(oldValue, newValue));
9495
}
96+
97+
/// <summary>
98+
/// This setup mirrors the behavior of Milvus's official configuration:
99+
/// https://github.com/milvus-io/milvus/blob/4def0255a928287f982f1d6b8c53ed32127bb84d/scripts/standalone_embed.sh#L56-L60
100+
/// </summary>
101+
private sealed class Healthcheck : HealthcheckConfig
102+
{
103+
private Healthcheck()
104+
{
105+
const long ninetySeconds = 90 * 1_000_000_000L;
106+
Test = ["CMD-SHELL", $"curl -f http://localhost:{MilvusManagementPort}/healthz"];
107+
Interval = TimeSpan.FromSeconds(30);
108+
Timeout = TimeSpan.FromSeconds(20);
109+
StartPeriod = ninetySeconds;
110+
Retries = 3;
111+
}
112+
113+
/// <summary>
114+
/// Gets the <see cref="HealthcheckConfig" /> instance.
115+
/// </summary>
116+
public static HealthcheckConfig Instance { get; }
117+
= new Healthcheck();
118+
}
95119
}

tests/Testcontainers.Milvus.Tests/MilvusContainerTest.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ namespace Testcontainers.Milvus;
22

33
public abstract class MilvusContainerTest : IAsyncLifetime
44
{
5-
private const string MilvusVersion = "v2.3.10";
6-
75
private readonly MilvusContainer _milvusContainer;
86

97
private MilvusContainerTest(MilvusContainer milvusContainer)
@@ -37,7 +35,7 @@ public async Task GetVersionReturnsExpectedVersion()
3735
.ConfigureAwait(true);
3836

3937
// Then
40-
Assert.Equal(MilvusVersion, version);
38+
Assert.EndsWith(version, MilvusBuilder.MilvusImage);
4139
}
4240

4341
protected virtual ValueTask DisposeAsyncCore()
@@ -49,7 +47,7 @@ protected virtual ValueTask DisposeAsyncCore()
4947
public sealed class MilvusDefaultConfiguration : MilvusContainerTest
5048
{
5149
public MilvusDefaultConfiguration()
52-
: base(new MilvusBuilder().WithImage("milvusdb/milvus:" + MilvusVersion).Build())
50+
: base(new MilvusBuilder().Build())
5351
{
5452
}
5553
}
@@ -64,7 +62,6 @@ public MilvusSidecarConfiguration()
6462

6563
private MilvusSidecarConfiguration(INetwork network)
6664
: base(new MilvusBuilder()
67-
.WithImage("milvusdb/milvus:" + MilvusVersion)
6865
.WithEtcdEndpoint("etcd:2379")
6966
.DependsOn(new ContainerBuilder()
7067
.WithImage("quay.io/coreos/etcd:v3.5.5")

0 commit comments

Comments
 (0)