Testcontainers: Synchronizing on Logs after the Service Was



我正在使用testcontainer开发一些组件测试。我可以同步服务就绪测试。但是,一旦服务准备好了,我需要准备fixture并运行测试,直到fixture完全加载。

被测容器写了一个日志,我可以用它来了解fixture何时被完全加载。但是,我找不到同步该日志的方法。

Testcontainers库是否为此提供了任何实用程序?

如果您使用的是GenericContainer对象类型,您可以简单地这样做:

WaitingConsumer consumer = new WaitingConsumer();
container.followOutput(consumer, STDOUT);
consumer.waitUntil(frame -> 
frame.getUtf8String().contains("STARTED"), 30, TimeUnit.SECONDS);

否则,您可以使用

处理整个日志:
container.getLogs();

希望这是有帮助的!

您可以使用日志消息等待策略来实现它。

public GenericContainer containerWithLogWait = new GenericContainer(DockerImageName.parse("redis:5.0.3"))
.withExposedPorts(6379)
.waitingFor(
Wait.forLogMessage(".*Ready to accept connections.*\n", 3)
);

您还可以通过从AbstractWaitStrategy扩展它来创建您自己的策略。

查看此页了解更多详情。

相关内容

最新更新